# 对于数值 0、空值 None、单引号空字符串 ''、双引号空字符串 ""、空列表 []、空元组 ()、空
# 字典 {}，Python 都会返回 False。——编者注
# requested_toppings = []
# for requested_topping in requested_toppings:
#     print(f"Adding {requested_topping}.")


requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
if requested_toppings:
    for requested_topping in requested_toppings:
        print(f"Adding {requested_topping}.")
    print("\nFinished making your pizza!")
else:
    print("Are you sure you want a plain pizza?")



available_toppings = ['mushrooms', 'olives', 'green peppers', 'pepperoni', 'pineapple', 'extra cheese']
requested_toppings = ['mushrooms', 'french fries', 'extra cheese']

for requested_topping in requested_toppings:
    if requested_topping in available_toppings:
        print(f"Adding {requested_topping}.")
    else:
        print(f"Sorry, we don't have {requested_topping}.")
print("\nFinished making your pizza!")


# 练习 5.8：以特殊⽅式跟管理员打招呼 创建⼀个⾄少包含 5 个⽤户名
# 的列表，并且其中⼀个⽤户名为 'admin'。想象你要编写代码，在每
# 个⽤户登录⽹站后都打印⼀条问候消息。遍历⽤户名列表，向每个⽤
# 户打印⼀条问候消息。
# 如果⽤户名为 'admin'，就打印⼀条特殊的问候消息，如下所
# ⽰。
# Hello admin, would you like to see a status report?
# 否则，打印⼀条普通的问候消息，如下所⽰。
# Hello Jaden, thank you for logging in again.
users = ['Jaden', 'admin', 'Gretchen', 'Penny', 'Cynthia']
for user in users:
    if user == 'admin':
        print(f"Hello {user}, would you like to see a status report?")
    else:
        print(f"Hello {user}, thank you for logging in again.")



# 练习 5.9：处理没有⽤户的情形 在为练习 5.8 编写的程序中，添加⼀
# 条 if 语句，检查⽤户名列表是否为空。
# 如果为空，就打印如下消息。
# We need to find some users!
# 删除列表中的所有⽤户名，确认将打印正确的消息。


#users = ['Jaden', 'admin', 'Gretchen', 'Penny', 'Cynthia']
users = []
if not users:
    print('We need to find some users!')





# 练习 5.10：检查⽤户名 按照下⾯的说明编写⼀个程序，模拟⽹站如
# 何确保每个⽤户的⽤户名都独⼀⽆⼆。
# 创建⼀个⾄少包含 5 个⽤户名的列表，并将其命名为
# current_users。
# 再创建⼀个包含 5 个⽤户名的列表，将其命名为 new_users，并
# 确保其中有⼀两个⽤户名也在列表 current_users 中。
# 遍历列表 new_users，检查其中的每个⽤户名是否已被使⽤。如
# 果是，就打印⼀条消息，指出需要输⼊别的⽤户名；否则，打印
# ⼀条消息，指出这个⽤户名未被使⽤。
# 确保⽐较时不区分⼤⼩写。换句话说，如果⽤户名 'John' 已被
# 使⽤，应拒绝⽤户名 'JOHN'。（为此，需要创建列表
# current_users 的副本，其中包含当前所有⽤户名的全⼩写版
# 本。）
print('练习 5.10')

current_users = ['Jaden', 'admin', 'Gretchen', 'Penny', 'Cynthia']

new_users = ['Tom', 'penny']

current_users_lower = []
for current_user in current_users:
    current_users_lower.append(current_user.lower())

for new_user in new_users:
    if new_user.lower() in current_users_lower:
        print(f"{new_user} is already taken. Please choose another username.")
    else:
        print(f"{new_user} is available.")



# 练习 5.11：序数 序数表⽰顺序位置，如 1st 和 2nd。序数⼤多以 th 结
# 尾，只有 1st、2nd、3rd 例外。
# 在⼀个列表中存储数字 1〜9。
# 遍历这个列表。
# 在循环中使⽤⼀个 if-elif-else 结构，打印每个数字对应的序
# 数。输出内容应为 "1st 2nd 3rd 4th 5th 6th 7th 8th
# 9th"，每个序数都独占⼀⾏。

print('练习 5.11')

muns = range(1, 10)
for num in muns:
    if num == 1:
        print("1st")
    elif num == 2:
        print("2nd")
    elif num == 3:
        print("3rd")
    else:
        print(f"{num}th")